`timescale 1ns / 1ps

module prbs_generator (
    input  wire        clk,
    input  wire        rst_n,
    input  wire        enable,
    input  wire [7:0]  seed,
    output wire        prbs_out,
    output wire [7:0]  lfsr_state
);

    // LFSR移位寄存器
    reg [7:0] lfsr_reg;
    
    // 反馈多项式：x^8 + x^6 + x^5 + x^4 + 1
    // 抽头位置：[7], [5], [4], [3], [0]
    wire feedback;
    assign feedback = lfsr_reg[7] ^ lfsr_reg[5] ^ lfsr_reg[4] ^ lfsr_reg[3] ^ lfsr_reg[0];
    
    // LFSR时序逻辑
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            // 避免全零状态
            lfsr_reg <= (seed == 8'h00) ? 8'h01 : seed;
        end else if (enable) begin
            // 左移并输入反馈
            lfsr_reg <= {lfsr_reg[6:0], feedback};
        end
    end
    
    // 输出连接
    assign prbs_out = lfsr_reg[7];    // 输出最高位
    assign lfsr_state = lfsr_reg;
    
endmodule